﻿using System;
using System.Collections.Generic;
using System.Text;
using Sinacor.Infra.UI.Common;
using Sinacor.UI.Bovespa.Alocacao.Communication;
using Sinacor.Infra.UI.Authorization;

namespace Sinacor.UI.Bovespa.Alocacao.Presenter
{
    public class NegocioAnulado : BasePresenter<INegocioAnulado>
    {
        # region Atributos
        Communication.Calendario _communicationCalendario;
        Communication.NegocioAnulado _communicationNegocioAnulado;
        Model.Parameter.FiltroNegocioAnulado _filtroNegocioAnulado;
        ModelCollection<Model.Calendario> _listaDataPregao;
        ModelCollection<Model.NegocioAnulado> _listaNegociosAnulados;
        #endregion

        # region Propriedades

        /// <summary>
        /// Filtro de Negocios Anulados
        /// </summary>
        public Model.Parameter.FiltroNegocioAnulado FiltroNegocioAnulado
        {
            get { return _filtroNegocioAnulado; }
            set { _filtroNegocioAnulado = value; }
        }

        /// <summary>
        /// Lista utilizada na combo "Data Pregão".
        /// </summary>
        public ModelCollection<Model.Calendario> ListaDataPregao
        {
            get { return _listaDataPregao; }
            set { _listaDataPregao = value; }
        }

        /// <summary>
        /// Lista utilizada na grid de Negócios Anulados.
        /// </summary>
        public ModelCollection<Model.NegocioAnulado> ListaNegociosAnulados
        {
            get { return _listaNegociosAnulados; }
            set { _listaNegociosAnulados = value; }
        }
        
        # endregion

        # region Construtor

        public NegocioAnulado(INegocioAnulado view)
            : base(view)
        {

        }

        #endregion

        /// <summary>
        /// Método chamada ao iniciar a tela.
        /// </summary>
        /// <returns></returns>
        public void Inicializar()
        {
            _communicationCalendario = new Communication.Calendario(this.Session);
            _communicationNegocioAnulado = new Sinacor.UI.Bovespa.Alocacao.Communication.NegocioAnulado(this.Session);
            ConsultarCalendario();
            ConsultarNegociosAnulados();
        }

        /// <summary>
        /// Disponilizar lista de Datas Pregão. 
        /// </summary>
        public void ConsultarCalendario()
        {
            _listaDataPregao = _communicationCalendario.ConsultarCalendario();
            View.AtualizarComboDataPregao();
            
        }

        /// <summary>
        /// Disponibiliza uma lista de negócios anulados.
        /// </summary>
        public void ConsultarNegociosAnulados()
        {
            ListaNegociosAnulados = _communicationNegocioAnulado.ConsultarNegociosAlocados(_filtroNegocioAnulado);
            View.AtualizarGridNegociosAnulados();
            if (ListaNegociosAnulados.Count == 0)
                View.InformarNenhumRegistroEncontrado();
        }


    }

}
